self.addEventListener('message', async (event) => {
    //获取主进程发过来的文件
    const file = event.data
    //单独开一个进程进行hash计算并得到新的文件名
    const fileName = await getFileName(file) 
    //把文件名再发回主进行
    self.postMessage(fileName)
    //根据文件对象获取文件内容得到的hash文件名
    async function getFileName(file) {
        //计算此文件的hash值
        const fileHash = await calculateFileHash(file);
        //获取文件扩展名
        const fileExtension = file.name.split(".").pop();
        return `${fileHash}.${fileExtension}`;
    }
    async function calculateFileHash(file) {
        const arrayBuffer = await file.arrayBuffer(); //得到二进制buffer数组
        const hashBuffer = await crypto.subtle.digest("SHA-256", arrayBuffer);
        return bufferToHex(hashBuffer); //16进制
    }
    //将arrayBuffer转换成16进制字符串
    function bufferToHex(buffer) {
        return Array.from(new Uint8Array(buffer)) //将buffer转成一个无符号的8位整形数组
            .map((b) => b.toString(16).padStart(2, "0"))
            .join("");
    }
})